unit DatosTecnicoBase;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Base, StdCtrls, Buttons, XPMan, ComCtrls,CustomMsgBox, ToolWin,
  ExtCtrls;

type
//clase que tiene el objeto provincia
  TProvincia = class(TObject)
    codigo: integer;
    descripcion:string;
  end;

  //clase que tiene el objeto localidad
  TLocalidad = class(TObject)
    codigo:integer;
    codigoProvincia:integer;
    descripcion:string;
  end;

  TfrmDatosTecnicoBase = class(TfrmBase)
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label10: TLabel;
    edtNumeroTecnico: TEdit;
    edtNombreTecnico: TEdit;
    edtApellidoTecnico: TEdit;
    edtCodProvincia: TEdit;
    edtCodLocalidad: TEdit;
    edtEmail: TEdit;
    edtTelefono: TEdit;
    cmbProvincia: TComboBox;
    cmbLocalidad: TComboBox;
    btnAceptar: TBitBtn;
    btnCancelar: TBitBtn;
    lblErrorCodigo: TLabel;
    lblErrorNombre: TLabel;
    lblErrorApellido: TLabel;
    lblErrorProvincia: TLabel;
    lblErrorLocalidad: TLabel;
    procedure ListaProvincia();
    procedure ListaLocalidad(codProvincia:integer);
    procedure cmbProvinciaChange(Sender: TObject);
    procedure cmbLocalidadChange(Sender: TObject);
    function Validar():Boolean;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmDatosTecnicoBase: TfrmDatosTecnicoBase;

implementation

uses Datos;

{$R *.dfm}

procedure TfrmDatosTecnicoBase.ListaLocalidad(codProvincia: integer);
var objeto:TLocalidad;
begin
  cmbLocalidad.Clear;
  frmDatos.tblLocalidades.Active := true;
  frmDatos.tblLocalidades.First;
  while not frmDatos.tblLocalidades.Eof do
    begin
      if frmDatos.tblLocalidades['cod_provincia']=codProvincia then
        begin
          objeto := TLocalidad.Create;
          objeto.codigo := frmDatos.tblLocalidades['cod_localidad'];
          objeto.descripcion := frmDatos.tblLocalidades['descripcion_localidad'];
          objeto.codigoProvincia := frmDatos.tblLocalidades['cod_provincia'];
          cmbLocalidad.Items.AddObject(objeto.descripcion,objeto);
        end;
      frmDatos.tblLocalidades.Next;
    end;
  frmDatos.tblLocalidades.Active := false;
end;

procedure TfrmDatosTecnicoBase.ListaProvincia;
var objeto:TProvincia;
begin
  cmbProvincia.Clear;           
  frmDatos.tblProvincia.Active := true;
  frmDatos.tblProvincia.First;
  while not frmDatos.tblProvincia.Eof do
    begin
      objeto := TProvincia.Create;
      objeto.codigo := frmDatos.tblProvincia['cod_provincia'];
      objeto.descripcion := frmDatos.tblProvincia['descripcion_provincia'];
      cmbProvincia.Items.AddObject(objeto.descripcion,objeto);
      frmDatos.tblProvincia.Next;
    end;
  frmDatos.tblProvincia.Active := false;
end;

procedure TfrmDatosTecnicoBase.cmbProvinciaChange(Sender: TObject);
var itemProvincia:TProvincia;
    i:integer;
begin
  inherited;
  i:=cmbProvincia.ItemIndex;
  itemProvincia:=TProvincia(cmbProvincia.Items.Objects[i]);
  edtCodProvincia.Text:=IntToStr(itemProvincia.codigo);
  ListaLocalidad(itemProvincia.codigo);
end;
procedure TfrmDatosTecnicoBase.cmbLocalidadChange(Sender: TObject);
var itemLocalidad:TLocalidad;
    i:integer;
begin
  inherited;
  i:=cmbLocalidad.ItemIndex;
  itemLocalidad:=TLocalidad(cmbLocalidad.Items.Objects[i]);
  edtCodLocalidad.Text:=IntToStr(itemLocalidad.codigo);
end;

function TfrmDatosTecnicoBase.Validar: Boolean;
var bandera:Boolean;
begin
  if edtNumeroTecnico.Text='' then
    begin
      bandera:=false;
      lblErrorCodigo.Visible:=true;
    end;

  if edtNombreTecnico.Text = '' then
    begin
      bandera:=false;
      lblErrorNombre.Visible := true;
    end;

  if edtApellidoTecnico.Text = '' then
    begin
      bandera:=false;
      lblErrorApellido.Visible := true;
    end;

  if edtCodProvincia.Text = '' then
    begin
      bandera:=false;
      lblErrorProvincia.Visible := true;
    end;

  if edtCodLocalidad.Text = '' then
    begin
      bandera:=false;
      lblErrorLocalidad.Visible := true;
    end;

  if bandera=false then
    begin
      MsgBox('Error','Por favor complete todos los datos requeridos',mtError,['Aceptar'],0);
      Validar:=false;
    end
  else
    begin
      Validar:=true;
    end;
end;

end.
